var posInicialDado1='';
var posInicialDado2='';
var posInicialDado3='';
var posInicialDado4='';
var posInicialDado5='';
var posInicialDado6='';
var posInicialDado7='';
var posInicialDado8='';
var posInicialDado9='';
var posInicialDado10='';
var posFinalDado1='';
var posFinalDado2='';
var posFinalDado3='';
var posFinalDado4='';
var posFinalDado5='';
var posFinalDado6='';
var posFinalDado7='';
var posFinalDado8='';
var posFinalDado9='';
var posFinalDado10='';
var numeroObjetivos=1;
var numeroDados=1;
var puntuacionNivel=0;
var stop=false;

function calculaPosicionInicial(){
	var posInicialDado1 = document.getElementById('posicionDado1').value;
	posFinalDado1 = document.getElementById('posicionFinal1').value;
	var dado1 = document.getElementById('caraDado1').value;
	if(dado1==null || dado1==""){
		var caminoD1=calculaCamino(posInicialDado1,posFinalDado1);
		dado1= "numCaras"+caminoD1;
	}
	
	if(dado1=="correcto"){
		document.getElementById(posInicialDado1).className="correcto";
		numeroObjetivos--;	
	}
	else{
		document.getElementById(posInicialDado1).className=dado1;
		document.getElementById(posFinalDado1).className="objetivo";
	}	
	
	if(document.getElementById('posicionDado2').value!=""){
		var posInicialDado2 = document.getElementById('posicionDado2').value;
		posFinalDado2 = document.getElementById('posicionFinal2').value;
		var dado2 = document.getElementById('caraDado2').value;
		if(dado2==null || dado2==""){
			var caminoD2=calculaCamino(posInicialDado2,posFinalDado2);
			dado2= "numCaras"+caminoD2;
		}
	
		if(dado2=="correcto"){
			document.getElementById(posInicialDado2).className="correcto";
		}
		else{
			document.getElementById(posInicialDado2).className=dado2;
			document.getElementById(posFinalDado2).className="objetivo";
			numeroObjetivos++;
		}
	}
	
	if(document.getElementById('posicionDado3').value!=""){
		var posInicialDado3 = document.getElementById('posicionDado3').value;
		posFinalDado3 = document.getElementById('posicionFinal3').value;
		var dado3 = document.getElementById('caraDado3').value;
		if(dado3==null || dado3==""){
			var caminoD3=calculaCamino(posInicialDado3,posFinalDado3);
			dado3= "numCaras"+caminoD3;
		}
		
		if(dado3=="correcto"){
			document.getElementById(posInicialDado3).className="correcto";
		}
		else{
			document.getElementById(posInicialDado3).className=dado3;
			document.getElementById(posFinalDado3).className="objetivo";
			numeroObjetivos++;
		}
	}
	
	if(document.getElementById('posicionDado4').value!=""){
		var posInicialDado4 = document.getElementById('posicionDado4').value;
		posFinalDado4 = document.getElementById('posicionFinal4').value;
		var dado4 = document.getElementById('caraDado4').value;
		if(dado4==null || dado4==""){
			var caminoD4=calculaCamino(posInicialDado4,posFinalDado4);
			dado4= "numCaras"+caminoD4;
		}
		
		if(dado4=="correcto"){
			document.getElementById(posInicialDado4).className="correcto";
		}
		else{
			document.getElementById(posInicialDado4).className=dado4;
			document.getElementById(posFinalDado4).className="objetivo";
			numeroObjetivos++;
		}
	}
	
	if(document.getElementById('posicionDado5').value!=""){
		var posInicialDado5 = document.getElementById('posicionDado5').value;
		posFinalDado5 = document.getElementById('posicionFinal5').value;
		var dado5 = document.getElementById('caraDado5').value;
		if(dado5==null || dado5==""){
			var caminoD5=calculaCamino(posInicialDado5,posFinalDado5);
			dado5= "numCaras"+caminoD5;
		}
		
		if(dado5=="correcto"){
			document.getElementById(posInicialDado5).className="correcto";
		}
		else{
			document.getElementById(posInicialDado5).className=dado5;
			document.getElementById(posFinalDado5).className="objetivo";
			numeroObjetivos++;
		}
	}
	
	if(document.getElementById('posicionDado6').value!=""){
		var posInicialDado6 = document.getElementById('posicionDado6').value;
		posFinalDado6 = document.getElementById('posicionFinal6').value;
		var dado6 = document.getElementById('caraDado6').value;
		if(dado6==null || dado6==""){
			var caminoD6=calculaCamino(posInicialDado6,posFinalDado6);
			dado6= "numCaras"+caminoD6;
		}
		
		if(dado6=="correcto"){
			document.getElementById(posInicialDado6).className="correcto";
		}
		else{
			document.getElementById(posInicialDado6).className=dado6;
			document.getElementById(posFinalDado6).className="objetivo";
			numeroObjetivos++;
		}
	}
	
	if(document.getElementById('posicionDado7').value!=""){
		var posInicialDado7 = document.getElementById('posicionDado7').value;
		posFinalDado7 = document.getElementById('posicionFinal7').value;
		var dado7 = document.getElementById('caraDado7').value;
		if(dado7==null || dado7==""){
			var caminoD7=calculaCamino(posInicialDado7,posFinalDado7);
			dado7= "numCaras"+caminoD7;
		}
		
		if(dado7=="correcto"){
			document.getElementById(posInicialDado7).className="correcto";
		}
		else{
			document.getElementById(posInicialDado7).className=dado7;
			document.getElementById(posFinalDado7).className="objetivo";
			numeroObjetivos++;
		}
	}
	
	if(document.getElementById('posicionDado8').value!=""){
		var posInicialDado8 = document.getElementById('posicionDado8').value;
		posFinalDado8 = document.getElementById('posicionFinal8').value;
		var dado8 = document.getElementById('caraDado8').value;
		if(dado8==null || dado8==""){
			var caminoD8=calculaCamino(posInicialDado8,posFinalDado8);
			dado8= "numCaras"+caminoD8;
		}
		
		if(dado8=="correcto"){
			document.getElementById(posInicialDado8).className="correcto";
		}
		else{
			document.getElementById(posInicialDado8).className=dado8;
			document.getElementById(posFinalDado8).className="objetivo";
			numeroObjetivos++;
		}
	}
	
	if(document.getElementById('posicionDado9').value!=""){
		var posInicialDado9 = document.getElementById('posicionDado9').value;
		posFinalDado9 = document.getElementById('posicionFinal9').value;
		var dado9 = document.getElementById('caraDado9').value;
		if(dado9==null || dado9==""){
			var caminoD9=calculaCamino(posInicialDado9,posFinalDado9);
			dado9= "numCaras"+caminoD9;
		}
		
		if(dado9=="correcto"){
			document.getElementById(posInicialDado9).className="correcto";
		}
		else{
			document.getElementById(posInicialDado9).className=dado9;
			document.getElementById(posFinalDado9).className="objetivo";
			numeroObjetivos++;
		}
	}
	
	if(document.getElementById('posicionDado10').value!=""){
		var posInicialDado10 = document.getElementById('posicionDado10').value;
		posFinalDado10 = document.getElementById('posicionFinal10').value;
		var dado10 = document.getElementById('caraDado10').value;
		if(dado10==null || dado10==""){
			var caminoD10=calculaCamino(posInicialDado10,posFinalDado10);
			dado10= "numCaras"+caminoD10;
		}
		
		if(dado10=="correcto"){
			document.getElementById(posInicialDado10).className="correcto";
		}
		else{
			document.getElementById(posInicialDado10).className=dado10;
			document.getElementById(posFinalDado10).className="objetivo";
			numeroObjetivos++;
		}
	}

	numeroDados=numeroObjetivos;
	puntuacionTotal=document.getElementById('puntuacionTotal').value;
	puntuacionNivel=document.getElementById('puntuacionNivel').value;
	
}

function calculaCamino(posInicialDado,posFinalDado){
	var x=Math.abs(posInicialDado.substring(0,1)-posFinalDado.substring(0,1));
	var y=Math.abs(posInicialDado.substring(2,3)-posFinalDado.substring(2,3));
		
	return x+y;
}

function mueveDado(posicionActual){
	var dado='';
	var esCasillaDado=comprobarCasillaDado(posicionActual);
	
	if(document.getElementById(posicionActual).className!="" || posicion!=0 ){
		if(movimientoTerminado){
			posicion=0;
			movimientoTerminado=false;
		}
		
		if(posicion==posicionActual){
			posicion=0;
		}
		else if(posicion==0 && esCasillaDado){
			posicion=posicionActual;
			if(parseInt(posicionActual.substring(0,1))>1){
				document.getElementById((parseInt(posicionActual.substring(0,1))-1)+','+posicionActual.substring(2,3)).style.cursor='pointer';
			}
			if(parseInt(posicionActual.substring(0,1))<8){
				document.getElementById(((parseInt(posicionActual.substring(0,1)))+1)+','+posicionActual.substring(2,3)).style.cursor='pointer';
			}
			if(parseInt(posicionActual.substring(2,3))>1){
				document.getElementById(posicionActual.substring(0,1)+','+(parseInt(posicionActual.substring(2,3))-1)).style.cursor='pointer';
			}
			if(parseInt(posicionActual.substring(2,3))<8){
				document.getElementById(posicionActual.substring(0,1)+','+((parseInt(posicionActual.substring(2,3)))+1)).style.cursor='pointer';
			}
		}
		else if(posicion!=posicionActual && 
				document.getElementById(posicionActual).style.cursor=='pointer'){
			document.getElementById(posicion).style.cursor='default';
			if(parseInt(posicion.substring(0,1))>1){
				if(!comprobarCasillaDado((parseInt(posicion.substring(0,1))-1)+','+posicion.substring(2,3))){
					document.getElementById((parseInt(posicion.substring(0,1))-1)+','+posicion.substring(2,3)).style.cursor='default';
				}
			}	
			if(parseInt(posicion.substring(0,1))<8){
				if(!comprobarCasillaDado((parseInt(posicion.substring(0,1))+1)+','+posicion.substring(2,3))){
					document.getElementById((parseInt(posicion.substring(0,1))+1)+','+posicion.substring(2,3)).style.cursor='default';
				}
			}
			if(parseInt(posicion.substring(2,3))>1){
				if(!comprobarCasillaDado(posicion.substring(0,1)+','+(parseInt(posicion.substring(2,3))-1))){
					document.getElementById(posicion.substring(0,1)+','+(parseInt(posicion.substring(2,3))-1)).style.cursor='default';
				}
			}
			if(parseInt(posicion.substring(2,3))<8){
				if(!comprobarCasillaDado(posicion.substring(0,1)+','+(parseInt(posicion.substring(2,3))+1))){
					document.getElementById(posicion.substring(0,1)+','+(parseInt(posicion.substring(2,3))+1)).style.cursor='default';
				}
			}
			
			var numeroAnterior=(document.getElementById(posicion).className).substring(8,9);
			var numeroActual=parseInt(numeroAnterior-1);
			dado= "numCaras"+numeroActual;
			movimientoTerminado=true;
			var puedeMoverse = true;
			//Empuje del dado
			if(esCasillaDado || document.getElementById(posicionActual).className=='correcto'){
				//Veo en que direccion se mueve
				var ejeInicioX = posicion.substring(0,1);
				var ejeFinX = posicionActual.substring(0,1);
				var ejeInicioY = posicion.substring(2,3);
				var ejeFinY = posicionActual.substring(2,3);
				
				if(ejeInicioX>ejeFinX){
					puedeMoverse = movimientoEmpujaDado("izquierda",posicionActual);
				}
				else if(ejeInicioX<ejeFinX){
					puedeMoverse = movimientoEmpujaDado("derecha",posicionActual);
				}
				else if(ejeInicioY>ejeFinY){
					puedeMoverse = movimientoEmpujaDado("arriba",posicionActual);
				}
				else if(ejeInicioY<ejeFinY){
					puedeMoverse = movimientoEmpujaDado("abajo",posicionActual);
				}
				
			}
		
			if(puedeMoverse){
				if(document.getElementById(posicion).className=='correcto'){
					numeroObjetivos++;
				}
				document.getElementById(posicion).className='cambioDado';
				document.getElementById(posicionActual).className=dado;
				document.getElementById(posicionActual).style.cursor='pointer';
				
				if(posicion==posFinalDado1 || posicion==posFinalDado2 || 
						posicion==posFinalDado3 || posicion==posFinalDado4 || posicion==posFinalDado5 || 
						posicion==posFinalDado6 || posicion==posFinalDado7 || posicion==posFinalDado8 || 
						posicion==posFinalDado9 || posicion==posFinalDado10){
					document.getElementById(posicion).className='objetivo';
				}
			}
			else{
				document.getElementById(posicion).style.cursor='pointer';
			}
			
		}

		 if(posicionActual==posFinalDado1 || posicionActual==posFinalDado2 || 
				posicionActual==posFinalDado3 || posicionActual==posFinalDado4 || posicionActual==posFinalDado5 || 
				posicionActual==posFinalDado6 || posicionActual==posFinalDado7 || posicionActual==posFinalDado8 || 
				posicionActual==posFinalDado9 || posicionActual==posFinalDado10){
			
			if(dado =='numCaras0'){			
				document.getElementById(posicionActual).className='correcto';
				numeroObjetivos--;
			}
		}

		if(dado =='numCaras0' && numeroObjetivos>0){
			numeroDados--;
			if(numeroDados==0){
				stop=true;
				alert("No tienes mas movimientos. Has perdido la partida");
				document.getElementById("nivelPerdido").style.display='';
			}
		}
		
		if(numeroObjetivos==0){
			puntuacionTotal = parseInt(puntuacionTotal)+parseInt(puntuacionNivel)+parseInt(tiempo);
			alert("Has ganado este nivel");
			document.getElementById("siguienteNivel").style.display='';
		}
	}	
	
}


var tiempo = 60;
function cuentaRegresiva(){
	if(!stop){
	    if (tiempo > 0){
	    	if(numeroObjetivos>0){
	    		tiempo--;
		    	document.getElementById('reloj').innerHTML="Tiempo:    " + tiempo;
		        setTimeout("cuentaRegresiva()",1000);
	    	}
	    }
	    else{
	    	alert("El tiempo ha finalizado. Has perdido la partida");
	    	document.getElementById("nivelPerdido").style.display='';
	    }
	}
}

function muestraGuardaPartida(){
	stop=true;

	document.getElementById("partida").style.display="";
}

function guardarPartida(){
	if(confirm("Si guarda la partida volvera a la pantalla inicial. Desea continuar?")){
		var contDado=0;
		var posicionesDados="";
		for(var i=1;i<=8;i++){
			for (var j=1;j<=8;j++){
				if(document.getElementById(i+","+j).className!="" && document.getElementById(i+","+j).className!="objetivo" && document.getElementById(i+","+j).className!="cambioDado"){
					contDado++;
					if(contDado==1){
						posicionesDados="posicionDado1="+i+","+j;
					}
					else if(contDado==2){
						posicionesDados=posicionesDados+"&posicionDado2="+i+","+j;
					}
					else if(contDado==3){
						posicionesDados=posicionesDados+"&posicionDado3="+i+","+j;
					}
					else if(contDado==4){
						posicionesDados=posicionesDados+"&posicionDado4="+i+","+j;
					}
					else if(contDado==5){
						posicionesDados=posicionesDados+"&posicionDado5="+i+","+j;
					}
					else if(contDado==6){
						posicionesDados=posicionesDados+"&posicionDado6="+i+","+j;
					}
					else if(contDado==7){
						posicionesDados=posicionesDados+"&posicionDado7="+i+","+j;
					}
					else if(contDado==8){
						posicionesDados=posicionesDados+"&posicionDado8="+i+","+j;
					}
					else if(contDado==9){
						posicionesDados=posicionesDados+"&posicionDado9="+i+","+j;
					}
					else if(contDado==10){
						posicionesDados=posicionesDados+"&posicionDado10="+i+","+j;
					}
					posicionesDados+="-"+document.getElementById(i+","+j).className;
				}
			}
		}
		var nivelActual = otroNivel-1;
		var nombre = document.getElementById("nombrePartida").value;
		document.location.href='guardarPartida?'+posicionesDados+'&nombre='+nombre+'&nivelTablero='+nivelActual+'&puntuacionTotal='+puntuacionTotal;
	}
}

function cargarPartida(idPartida){
	if(confirm('Desea cargar la partida seleccionada?')){
		document.location.href='obtenerNivelGuardado?id='+idPartida;
	}
	
}

function muestraGuardaPuntuacion(){
	document.getElementById("puntuacionPartida").style.display="";
}

function guardarPuntuacion(){
		var nivelActual = otroNivel-1;
		var nombre = document.getElementById("nombrePuntuacion").value;
		var apellido = document.getElementById("apellidoPuntuacion").value;
		document.location.href='guardarPuntuacion?&nombre='+nombre+'&apellido='+apellido+'&nivelTablero='+nivelActual+'&puntuacionTotal='+puntuacionTotal;
}

function movimientoEmpujaDado(tipo,posicionActual){
	var posicionDestino=posicionActual;
//	var posicionDestinoSiguiente="";
	var movimiento = false;
	
	if(tipo=="arriba" && (parseInt(posicionActual.substring(2,3)))>1){
		posicionDestino=posicionActual.substring(0,2)+(parseInt(posicionActual.substring(2,3))-1);
//		posicionDestinoSiguiente=posicionActual.substring(0,2)+(parseInt(posicionActual.substring(2,3))-2);
		movimiento=true;
	}
	else if(tipo=="abajo" && (parseInt(posicionActual.substring(2,3)))<8){
		posicionDestino=posicionActual.substring(0,2)+(parseInt(posicionActual.substring(2,3))+1);
//		posicionDestinoSiguiente=posicionActual.substring(0,2)+(parseInt(posicionActual.substring(2,3))+2);
		movimiento=true;
	}
	else if(tipo=="izquierda" && (parseInt(posicionActual.substring(0,1)))>1){
		posicionDestino=(parseInt(posicionActual.substring(0,1))-1)+posicionActual.substring(1,3);
//		posicionDestinoSiguiente=(parseInt(posicionActual.substring(0,1))-2)+posicionActual.substring(1,3);
		movimiento=true;
	}
	else if(tipo=="derecha" && (parseInt(posicionActual.substring(0,1)))<8){
		posicionDestino=(parseInt(posicionActual.substring(0,1))+1)+posicionActual.substring(1,3);
//		posicionDestinoSiguiente=(parseInt(posicionActual.substring(0,1))+2)+posicionActual.substring(1,3);
		movimiento=true;
	}
	document.getElementById(posicionDestino).style.cursor='pointer';
	
	if(movimiento){
		//Comprobamos si la siguiente tambien esta ocupada
		var casillaOcupadaSiguiente=(document.getElementById(posicionDestino)!=null && (comprobarCasillaDado(posicionDestino) || document.getElementById(posicionDestino).className=='correcto'));
		
		if(casillaOcupadaSiguiente){
			movimientoEmpujaDado(tipo,posicionDestino);
		}
		
		if(document.getElementById(posicionActual).className=='correcto'){
			numeroObjetivos++;
			 if(document.getElementById(posicionDestino).className=='objetivo'){
					document.getElementById(posicionDestino).className="correcto";
					numeroObjetivos--;
			 }
			else{		
				document.getElementById(posicionDestino).className="numCaras0";
			}
		}
		else{
			 if(document.getElementById(posicionDestino).className=='objetivo'){
					document.getElementById(posicionDestino).className="correcto";
					numeroObjetivos--;
			 }
			else{		
				document.getElementById(posicionDestino).className=document.getElementById(posicionActual).className;
			}
		}
	}
	
	return movimiento;
	
}

function comprobarCasillaDado(posicion){
	
	return esCasilla=(document.getElementById(posicion).className=='numCaras0' || document.getElementById(posicion).className=='numCaras1'
		|| document.getElementById(posicion).className=='numCaras2' || document.getElementById(posicion).className=='numCaras3'
		|| document.getElementById(posicion).className=='numCaras4' || document.getElementById(posicion).className=='numCaras5'
			|| document.getElementById(posicion).className=='numCaras6');
	
}

